home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 1.3 KB | 82 lines | [TEXT/CWIE] |
- // Activator.cp
-
- #ifndef Activator_h
- #include "Activator.h"
- #endif
- #ifndef Focus_h
- #include "Focus.h"
- #endif
- #ifndef ContextMaintainer_h
- #include "ContextMaintainer.h"
- #endif
-
- Activator::Activator( Focus& focus )
- : Enableable( !focus.Active() ),
- // We can't call Activate() yet, so we start disabled
- // if we're connected to an active focus.
- active( false ),
- focusActive( focus.Active() ),
- link( this )
- {
- focus.activators.Add( link, afterEnd );
- }
-
- Activator::~Activator()
- {
- }
-
- void Activator::FocusActivated()
- {
- Assert( !focusActive );
- Assert( !active );
-
- focusActive = true;
- if ( Enabled() )
- {
- ContextMaintainer oldContext( *this );
- active = true;
- Activate();
- }
- }
-
- void Activator::FocusDeactivated()
- {
- Assert( focusActive );
- Assert( active == Enabled() );
-
- focusActive = false;
- if ( Enabled() )
- {
- ContextMaintainer oldContext( *this );
- active = false;
- Deactivate();
- }
- }
-
- void Activator::BeEnabled()
- {
- Assert( !active );
-
- if ( focusActive )
- {
- ContextMaintainer oldContext( *this );
- active = true;
- Activate();
- }
- }
-
- void Activator::BeDisabled()
- {
- Assert( focusActive == active );
-
- if ( focusActive )
- {
- ContextMaintainer oldContext( *this );
- active = false;
- Deactivate();
- }
- }
-
- #include "ListLink.cp"
- #include "ListOf.cp"
-